#ifndef __BYTE_ALLOC_H
#define __BYTE_ALLOC_H

#include <stdint.h>

namespace utils {

template <uint32_t BYTE_SIZE> class ByteAlloc {

public:
    uint8_t *alloc(uint8_t len) {
        if ((m_index + len) > BYTE_SIZE) {
            m_index = 0;
        }
        return m_buf + m_index;
    }

    void acquire(uint8_t len) { m_index += len; }

private:
    uint8_t m_buf[BYTE_SIZE];
    uint32_t m_index = 0;
};

} // namespace utils

#endif
